/**
 * 配置封装axios用于刷新token
 */
import axios from 'axios';
import config from '../mp.config.js';

let token = localStorage.getItem('token');

// 创建axios实例
var http = axios.create({
    /* timeout: 1000 * 12,
    retry: 2, //设置全局重试请求次数（最多重试几次请求） */
    timeout: 5 * 1000, //请求超时时间（5秒后还未接收到数据，就需要再次发送请求）
    retry: 2, //设置全局重试请求次数（最多重试几次请求）
    retryDelay: 1000, //设置全局请求间隔
});

// 添加请求拦截器
http.interceptors.request.use(async(config) => {
    if (!token) {
        token = await getToken();
    }
    config.headers={
        ...{
            'x-from-electron': 'raymond-app',
            'token': token||''
        },
        ...config.headers,
    }
    return config;
}, err => {
    return Promise.reject(err);
});

// 添加响应拦截器
//异步请求后，判断token是否过期
http.interceptors.response.use((result) => {
    /* if (result.status == 200) {
        return result
    } */
    result.token=token; //将token存入result中
    return result
}, (error) => {


});

function getToken() {
	return new Promise((resolve, reject) => {
        axios({url:config.route.getToken}).then(res => {
            localStorage.setItem('token', res.data.data.token);
            resolve(res.data.data.token)
        }).catch(err => {
            reject(err)
        })
	});
}

export default http;